package br.com.pesca.dao;

import br.com.pesca.entity.Tecnico;
import java.util.List;
import javax.persistence.Query;
import org.apache.commons.lang3.StringUtils;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Restrictions;

public class TecnicoDAO extends BaseDAO<Tecnico> {

    /**
     * Busca técnicos do banco de dados retornando uma lista para as tabelas de
     * busca.
     *
     * @param nome
     * @return
     */
    @SuppressWarnings("unchecked")
    public List<Tecnico> consultaNome(String nome) {
        Session session = getEntityManager().unwrap(Session.class);
        Criteria criteria = session.createCriteria(Tecnico.class);

        if (StringUtils.isNotBlank(nome)) {
            criteria.add(Restrictions.ilike("nome", nome.toUpperCase(), MatchMode.ANYWHERE));
        }
        return criteria.list();
    }

    /**
     * Busca técnicos do banco de dados a medida em que é digitado o seu nome
     * nos campos de autocompletar.
     *
     * @param nome
     * @return
     */
    public List<Tecnico> buscarTecnicoPeloNome(String nome) {
        Session session = getEntityManager().unwrap(Session.class);
        Criteria criteria = session.createCriteria(Tecnico.class);

        if (StringUtils.isNotBlank(nome)) {
            criteria.add(Restrictions.ilike("nome", nome.toUpperCase(), MatchMode.START));
        }
        return criteria.list();
    }
}
